package org.jeecg.modules.travel.service;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.travel.dto.attraction.AppAttractionPageDto;
import org.jeecg.modules.travel.dto.attraction.AttractionAddDto;
import org.jeecg.modules.travel.dto.attraction.AttractionAuthDto;
import org.jeecg.modules.travel.dto.attraction.AttractionEditDto;
import org.jeecg.modules.travel.entity.JhAttraction;
import org.jeecg.modules.travel.vo.attraction.AppAttractionDetailVo;
import org.jeecg.modules.travel.vo.attraction.AppAttractionRecordVo;
import org.jeecg.modules.travel.vo.attraction.AttractionListVo;
import org.jeecg.modules.travel.vo.attraction.PcAttractionDetailVo;

/**
 * @Description: 景点表
 * @Author: jeecg-boot
 * @Date:   2025-04-19
 * @Version: V1.0
 */
public interface IJhAttractionService extends IService<JhAttraction> {

    /**
     * 移动端分页列表
     * @param dto 参数
     * @param userId 用户id
     * @param page 分页
     * @param queryWrapper 条件
     * @return {@code IPage<AppAttractionRecordVo> }
     * @author wentao.wang
     * @date 2025-04-27 21:28:11
     */
    IPage<AppAttractionRecordVo> queryAttractionList(AppAttractionPageDto dto, String userId, Page<JhAttraction> page, QueryWrapper<JhAttraction> queryWrapper);

    /**
     * 移动端详情
     * @param id id
     * @param userId 用户id
     * @return {@code AppAttractionDetailVo }
     * @author wentao.wang
     * @date 2025-04-27 21:27:51
     */
    AppAttractionDetailVo appAttractionDetail(String id, String userId);

    /**
     * 添加
     * @param dto 参数
     * @return {@code String }
     * @author wentao.wang
     * @date 2025-04-27 21:26:53
     */
    String attractionAdd(AttractionAddDto dto);

    /**
     * 编辑
     * @param dto 参数
     * @return {@code String }
     * @author wentao.wang
     * @date 2025-04-27 21:26:43
     */
    String attractionEdit(AttractionEditDto dto,String username);

    /**
     * 随机推荐列表
     * @param dto 参数
     * @param userId 用户id
     * @return {@code IPage<AppAttractionRecordVo> }
     * @author wentao.wang
     * @date 2025-04-27 21:27:04
     */
    IPage<AppAttractionRecordVo> randomAttractionList(AppAttractionPageDto dto, String userId);

    /**
     *  查询  风景分类id->风景分类名称
     * @param page 分页
     * @param queryWrapper 条件
     * @return
     */
    IPage<AttractionListVo> queryPage(Page<JhAttraction> page, QueryWrapper<JhAttraction> queryWrapper);

    /**
     * pc景点详情
     * @param id id
     * @return {@code PcAttractionDetailVo }
     * @author wentao.wang
     * @date 2025-04-24 23:33:45
     */
    PcAttractionDetailVo pcAttractionDetail(String id);

    /**
     * 审核
     * @param dto 参数
     * @param userId 用户id
     * @return {@code String }
     * @author wentao.wang
     * @date 2025-04-27 21:26:35
     */
    String attractionAuth(AttractionAuthDto dto, String userId);
}
